import { getToken } from '@/utils/auth'
import Axios from 'axios'
import qs from 'qs'
//  将{id：1，name：'lihai'}转化 id=1&name=lihai

//  全局配置
const myAxios = Axios.create({
  baseURL: process.env.VUE_APP_BASE_API, //  网络请求的IP
  timeout: 5000 //  请求网络
})
//  携带token
myAxios.defaults.headers.common['Authorization'] = getToken()
//  响应接受前的拦截
myAxios.interceptors.response.use(function(response) {
  //  将后台的参数设置到response（数据封装）
  const { data } = response
  response.data = data.data
  response.status = data.status
  response.statusText = data.message
  //  异常处理
  if (data.status !== 200) {
    // Toast (data.message)
    return Promise.reject(data.message)
  }
  return response
}, function(error) {
  // Toast (data.message)
  return Promise.reject(error)
})

//  get方式请求
export function get(url, params) {
  return myAxios({
    method: 'get',
    url,
    params,
    timeout: 1000,
    headers: {
      'X-Request-With': 'XMLHttpRequest',
      'Content-Type': 'application/x-www-form-rilencoded; charset=UTF-8'
    }
  })
}
//  拼接字符串的方式将{id：1，name：'lihai'}转化 id=1&name=lihai
export function post(url, data) {
  return myAxios({
    method: 'post',
    url,
    data: qs.stringify(data),
    timeout: 10000,
    headers: {
      'X-Request-With': 'XMLHttpRequest',
      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    }

  })
}
//  提交post请求，查询字符串，对象嵌套数组的格式
// {
//     id：1，
//     arr：[]
// }
export function post_obj_array(url, data) {
  return myAxios({
    method: 'post',
    url,
    data: qs.stringify(data, { allowDots: true }),
    timeout: 10000,
    headers: {
      'X-Request-With': 'XMLHttpRequest',
      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    }

  })
}
//  提交post请求，查询字符串，参数为数组是
// {ids：[1,2]
// }
export function post_array(url, data) {
  return myAxios({
    method: 'post',
    url,
    data: qs.stringify(data, { arrayFormat: 'repeat' }),
    timeout: 10000,
    headers: {
      'X-Request-With': 'XMLHttpRequest',
      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    }

  })
}
// json
export function post_json(url, data) {
  return myAxios({
    method: 'post',
    url,
    data,
    timeout: 10000
  })
}

